package com.zpark;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

/**
 *      Servlet 容器初始化 Servlet 时，会为这个 Servlet 创建一个 ServletConfig
 * 对象，并将 ServletConfig 对象作为参数传递给 Servlet 。通过 ServletConfig 对象
 * 即可获得当前 Servlet 的初始化参数信息。
 *		一个 Web 应用中可以存在多个 ServletConfig 对象，一个 Servlet 只能对应一个
 *	ServletConfig 对象，即 Servlet 的初始化参数仅对当前 Servlet 有效。
 *      获取servletConfig独享的两种方式：
 *              1、通过HttpServlet的getServletConfig()方法获取
 *              2、通过重写init(ServletConfig config)方法获取
 */
public class ServletConfig01 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 获取ServletConfig对象
		ServletConfig config = this.getServletConfig();

		/*
			获取当前servlet的名字
		 */
		String servletName = config.getServletName();
		System.out.println(servletName);

		/*
			获取ServletContext对象
		 */
		ServletContext context = config.getServletContext();

		/*
			根据初始化参数的名字获取对应的值
		 */
		String username = config.getInitParameter("username");
		System.out.println(username);

		/*
			获取所有的初始化参数的名字
		 */
		Enumeration<String> names = config.getInitParameterNames();

		// 循环获取初始化参数名字
		while (names.hasMoreElements()) {
			// 获取初始化参数名字
			String name = names.nextElement();
			// 根据初始化参数名字获取对应的值
			String value = config.getInitParameter(name);

			System.out.println(name + "=" + value);
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

	}
}
